1. 연구배경

경배틀필드5 표지

<사진1. 배틀필드5 표지>

지난 5월 23일 해외의 유명 FPS게임인 배틀필드5의 트레일러가 최초로 공개되었습니다.

배틀필드 시리즈

<사진2. 지금까지 발매된 배틀필드 시리즈>

배틀필드는 2002년 시리즈 최초 게임인 ‘배틀필드1942’를 시작으로 지금까지 계속해서 발매 중인 FPS게임입니다. 17년 동안 정식발매한 게임 수만 해도 총 15개이며(사진에는 DLC까지 모두 포함), 18년 현재 10월 19일 정식 발매를 목표로 배틀필드5가 개발 중에 있습니다. 현재까지 많은 사랑을 받아온 게임 시리즈이지만, 배틀필드5의 트레일러가 공개된 이후, 웹상에서의 혹평을 들으면서 때아닌 위기를 맞게 되었습니다.

배틀필드1과 배틀필드5

<사진3. 배틀필드1과 배틀필드5 비교>

일례로 (6월 4일 기준) 유튜브에 게시된 배틀필드5의 트레일러가 ‘좋아요’가 30만, ‘싫어요’가 38만을 기록하고 있는 반면, 바로 전작인 ‘배틀필드1’의 최초 공개 트레일러가 현재 유튜브에서 좋아요 221만과 싫어요 4.3만을 기록하고 있는 것과는 대조적입니다. 배틀필드1은 트레일러 공개 이후, 시리즈 사상 최고의 호평과 기대를 받았으며, 정식발매가 된 이후에도 메타크리틱 전기종 평균 88점, 오픈크리틱 87점을 받았고, 2016년 GOTY 16개를 수상해 그해 GOTY 4위를 기록하여 2011년에 GOTY 8개를 수상한 배틀필드3의 기록을 갱신했습니다. 멀티플레이 게임에는 상대적으로 수상이 박한 GOTY의 경향을 보았을 때, 이와 같은 성적은 쾌거라고 볼 수 있습니다.

다시 배틀필드5로 돌아가서, 현재 혹평을 받고 있는 배틀필드5이지만, 현재의 반응이 게임 출시 때까지 이어진다고 단정할 수는 없습니다. 게임은 결국 정식 발매 이후의 게임 자체가 가진 내적 오락요소나 배틀필드 같은 대규모 온라인 게임의 경우에는 오락요소와 함께 게임사가 게이머를 견인하는 운영적 요소가 평가의 큰 부분을 차지하기 때문입니다. 현재 혹평을 받고 있는 것도 트레일러이며, 트레일러는 말그대로 게임이 출시되기 전의 예고편이지 게임 자체가 아닙니다. 따라서 저는 아직 정식 출시가 되지 않은 상황에서 과연 그런 부정적인 반응이 웹상에서 계속 지배적으로 흘러가는가에 대한 추이를 파악하고자 하였습니다.


  1. 연구방법

I. 데이터 수집

데이터 수집 개요

<사진4. 데이터 수집 개요>

데이터는 트위터 데이터를 수집했고, 트레일러가 공개된 5월 23일부터 시작해서 6월 4일까지 총 13일동안 모아보았습니다. 데이터 수집은 R코드를 사용했으며, 데이터 수집 조건으로는 battlefieldv 해시태그를 단 트윗으로 한정하였습니다.


<코드1. 트위터를 통한 데이터 수집>

library(httpuv)
library(rtweet)

#5월23일
tweets_battlefield5_0523 <- search_tweets("#battlefieldv", n = 18000)
save(tweets_battlefield5_0523,file="battlefield5_0523.RData")

#5월 24일
tweets_battlefield5_0524 <- search_tweets("#battlefieldv", n = 9000)
save(tweets_battlefield5_0524,file="battlefield5_0524.RData")

.
.
.

#6월 4일
tweets_battlefield5_0604 <- search_tweets("#battlefieldv", n = 9000)
save(tweets_battlefield5_0604,file="battlefield5_0604.RData")


#종합
library(stringr)
library(dplyr)
library(lubridate)

all_battlefield <- bind_rows(tweets_battlefield5_0523, 
                             tweets_battlefield5_0524, 
                             tweets_battlefield5_0525, 
                             tweets_battlefield5_0526,
                             tweets_battlefield5_0527,
                             tweets_battlefield5_0528, 
                             tweets_battlefield5_0529, 
                             tweets_battlefield5_0530,
                             tweets_battlefield5_0531,
                             tweets_battlefield5_0601,
                             tweets_battlefield5_0602,
                             tweets_battlefield5_0603,
                             tweets_battlefield5_0604)

include_day <- "2018-05-23|2018-05-24|2018-05-25|2018-05-26|2018-05-27|2018-05-28|2018-05-29|2018-05-30|2018-05-31|2018-06-01|2018-06-02|2018-06-03|2018-06-04"

all_battlefield_refine <- all_battlefield %>% 
  count(status_id, created_at, user_id, screen_name,text, sort=T) %>% 
  mutate(time_floor = floor_date(created_at, unit = "day")) %>%
  filter(str_detect(created_at, include_day)) %>% 
  select(status_id, user_id, time_floor, screen_name,text)


  1. 분석과정

분석 개요

<사진5. 분석 개요>


• 데이터 전처리를 통해, 해시태그의 종류 파악

데이터분석은 수집한 데이터를 전처리하여, 전체 트윗에서 어떤 종류의 해시태그가 사용되었는지 파악하였습니다.


<코드2. 데이터 전처리>

unnest_regex <- "[^[:word:]#@]"
remove_regex <- "(https?://)[[:word:]./]+|(www\\.)[[:word:]./]+|&amp;|&lt;|&gt;|&quot;|RT"

library(tidytext)

meta_data <- all_battlefield_refine %>%
  mutate(text = str_replace_all(text, "[#@]?[^[:ascii:]]", "")) %>% 
  mutate(text = str_replace_all(text, remove_regex, "")) %>% 
  unnest_tokens(word, text, token = "regex", pattern = unnest_regex) %>% 
  filter(!word %in% stop_words$word)

not_need_hashtag <- c("#battlefield", "#battlefieldv", "#battlefield5", "#bfv", "#bf5")
#제외시킬 해시태그 목록

battlefield_hashtag <- meta_data %>% 
  mutate(word = str_replace_all(word, "[[:word:]]+[#]", "#")) %>% 
  mutate(word = str_replace_all(word, "[#]+", "#")) %>% 
  filter(str_detect(word, "[#]+[[:word:]]+")) %>% 
  filter(!word %in% not_need_hashtag)

hashtag_list <- battlefield_hashtag %>% 
  count(word, sort=T) %>%
  
write_csv(hashtag_list, "hashtag_list.csv")


• 긍정적&부정적 해시태그를 가려내고, 이를 통해 날짜별 감정 파악

그 중 가장 많은 빈도수를 차지하는 상위의 해시태그 중에서 긍정적 담론을 나타내는 해시태그와 부정적 담론을 나타내는 해시태그를 선별하였습니다. 이를 통해 날짜별로 담론의 감정 추이를 파악하였습니다.


<코드3. 감정 해시태그 선별>

hashtag_sentiment <- data.frame(word = c("#everyonesbattlefield", 
                                         "#neverbethesame",
                                         "#highv",
                                         "#bestcommunityintheworld",
                                         "#notmybattlefield"),
                                sentiment = c("postive","postive","postive","postive","negative"))
#긍정적&부정적 해쉬태그 lexicon


day_by_day_hashtag <- battlefield_hashtag %>% 
  inner_join(hashtag_sentiment) %>% 
  group_by(time_floor) %>% 
  count(sentiment)

write_csv(day_by_day_hashtag, "day_by_day_hashtag.csv")


• 긍정적&부정적 해시태그를 가려내고, 이를 통해 감정 네트워크 구축

해당 해시태그가 사용된 트윗의 노드와 링크만을 고려하여, NodeXL을 통해 배틀필드5에 대한 감정 네트워크를 구축해보았습니다.


<코드4. 네트워크 구축을 위한 csv파일 생성>

edge_positve <- all_battlefield_refine %>%
  mutate(text = str_replace_all(text, "[#@]?[^[:ascii:]]", "")) %>% 
  mutate(text = str_replace_all(text, remove_regex, "")) %>%
  mutate(text = tolower(text)) %>% 
  filter(str_detect(text, "#everyonesbattlefield|#neverbethesame|#highv|#bestcommunityintheworld")) %>% 
  unnest_tokens(word, text, token = "regex", pattern = unnest_regex) %>% 
  filter(!word %in% stop_words$word) %>% 
  filter(str_detect(word, "[@][[:word:]]+")) %>% 
  mutate(word = str_replace_all(word, "@", "")) %>% 
  mutate(from = screen_name, to = word) %>% 
  select(from, to, time_floor)

write_csv(edge_positve, "edge_positive.csv")

edge_negative <- all_battlefield_refine %>%
  mutate(text = str_replace_all(text, "[#@]?[^[:ascii:]]", "")) %>% 
  mutate(text = str_replace_all(text, remove_regex, "")) %>%
  mutate(text = tolower(text)) %>% 
  filter(str_detect(text, "#notmybattlefield")) %>% 
  unnest_tokens(word, text, token = "regex", pattern = unnest_regex) %>% 
  filter(!word %in% stop_words$word) %>% 
  filter(str_detect(word, "[@][[:word:]]+")) %>% 
  mutate(word = str_replace_all(word, "@", "")) %>% 
  mutate(from = screen_name, to = word) %>% 
  select(from, to, time_floor)

write_csv(edge_negative, "edge_negative.csv")


  1. 해시태그(Hashtag)를 사용한 이유

동일한 성향의 글들은 모인다 출저: 김수철·박상오, 2012

저는 데이터를 수집하고 분석할 때, 모두 해시태그를 사용하는 조건을 두었습니다. 이는 제가 해시태그를 트위터 상에서 이용자들이 특정 담론에 참여하는 확실한 자기표현수단으로 간주했기 때문입니다.

해시태그를 사용함으로써 트위터 이용자들은 해당 주제에 참여합니다. 2015년 11월 파리 테러 사건 때에는 #prayforparis가 포함된 트윗을 올려 해당 사건의 피해자들을 추도한 것이 그랬으며, 현재는 미투운동이 그렇다고 볼 수 있습니다. 네트워크 관점에서 보자면, 해당 해시태그를 사용하는 것만으로도 네트워크 자체에는 참여했다고 여길 수 있습니다. 또한 여타 SNS보다 속보성과 확산성을 강조하는 트위터의 성격을 고려했을 때, 트위터 내의 네트워크는 다른 SNS에서 구축된 네트워크보다 더 견고하다고 판단하였습니다.

네트워크 안의 감정 네트워크

<사진6. 네트워크 안의 감정 네트워크>

#battlefieldv를 사용한 것은 배틀필드5에 관한 네트워크에 참여한 것이고, 해당 트윗에서 감정을 지닌 해시태그를 동시에 사용했다면, 커다란 네트워크에 포함된 감정 네트워크에 이용자가 속해 있다고 생각했습니다. 이는 하나의 트윗을 작성할 때, 사용할 수 있는 해시태그 수에 제한이 없기 때문에 구상할 수 있었습니다.


  1. 분석결과

• 날짜별 트윗량

날짜별 트윗량

<사진7. 날짜별 트윗량>

총 73881개의 트윗을 수집했고, 트레일러가 공개되고 하루~이틀 후가 트윗량이 가장 많았으며, 이후에는 급감하다가 일정수준에 머무르는 모습을 보였습니다


• 해시태그를 통한 감정 분석

<표1. 상위 10개의 해시태그>

상위 10개의 해시태그

저는 실제로 상위 100개까지의 해시태그를 확인하였지만, 지면 관계상 10개정도를 보여드리도록 하겠습니다. 여기서 주목하여서 할 해시태그는 notmybattlefield와 everyonesbattlefield입니다. 전자는 부정적인 담론을 의미하며, 후자는 긍정적인 담론을 의미합니다.

상위 10개의 해시태그

<사진8. 감정별 해시태그 분류>


<표2. 각 해시태그의 의미>

해시태그 비고
#notmybattlefield ‘내가 알던 배틀필드가 아니야’는 공개된 트레일러가 지금까지의 배틀필드 시리즈와는 상이하게 달라 그에 따른 유저들의 반발로 퍼지게 됨. 사실상 현재 배틀필드5가 격고 있는 논란의 가장 핵심을 가리키는 해시태그임
#everyonesbattlefield ‘우리 모두 배틀필드를 즐기자‘
#highv 기존에 알던 하이파이브뿐만 아니라 ‘날아오르라 배틀필드5’의 의미도 있음(로마 숫자 V에서 착안)
#neverbethesame 비록 트레일러는 그렇게 공개되었지만 실제 게임은 그렇지 않을 것이라는 희망적 관측
#bestcommunityintheworld 트위터 자체와 트위터 이용자에 대한 경의(respect)를 내포하고 있는 해시태그로서, 대부분 긍정적인 상황에서 사용된다. 이와 같은 경우에는 배틀필드 5에 대한 소식을 활발하게 공유하고자 할 때 주로 사용


날짜별 감정 비유

<사진9. 날짜별 감정 비율>

이를 바탕으로 배틀필드5에 대한 긍정적 담론과 부정적 담론의 비율을 시각화해 보았습니다. 공개 초반에는 확실히 부정적인 담론이 압도적으로 우세한 비율을 보였습니다. 그러나 마지막날까지 누적된 담론비율은 부정적 담론이 다소 앞서긴 하나, 첫날과 확실히 차이가 날 정도로 긍정적 담론과 부정적 담론의 비율이 비슷해졌습니다. 누적이 아닌 각 날짜별 담론비율을 보았을 때도, 발표 초반에는 부정적 담론이 앞섰지만, 어느 순간을 기점으로 긍정적 담론이 부정적 담론을 앞서기 시작했고 마지막에 이르러서는 서로 비등비등한 경향을 보였습니다.


• 감정 네트워크 분석

부정적 네트워크

<사진10. 부정적 네트워크>


<표3. 부정적 네트워크 지표>

부정적 네트워크 지표

긍정적 네트워크

<사진11. 긍정적 네트워크>


s

<표4. 긍정적 네트워크 지표>

긍정적 네트워크 지표

네트워크 지표의 경우, In-degree 값을 사용하는 것이 가장 유의미하다고 판단했습니다. 이는 트위터 구조상 In-degree 값이 높은 사람을 위주로 담론이 형성되기 때문입니다.


전체 감정 네트워크

<사진12. 전체 감정 네트워크>


In-degree값을 중심으로 구성한 감정 네트워크

<사진13. In-degree값을 중심으로 구성한 감정 네트워크>

In-degree 값이 가장 높은 상위 행위자들을 중심으로 네트워크를 다시 구성해보았습니다. 확인할 결과 부정적 담론의 인플루언서들은 실제로는 평범한 트위터 유저였인 반면, 긍정적 담론의 인플루언서들은 게임 업계와 관련된 사람들이었습니다.


<표5. 네트워크 상 주요 인플루언서>

네트워크 상 주요 인플루언서


<표6. 인플루언서에 따른 링크 횟수 추이>

인플루언서에 따른 링크 횟수 추이

각 인플루언서들을 중심으로 시간에 따른 연결관계 정도를 파악해 보았습니다. 부정적 담론의 관계정도는 시간이 따라 줄어드는 경향을 보이는 반면, 긍정적 담론의 관계정도는 시간에 따라 오히려 늘어나는 현상을 보였습니다.

이번 사태를 비꼬는 사진

<사진14. 이번 사태를 비꼬는 사진>

실제로 부정적 담론의 인플루언서들은 사람들과 지속적으로 관계를 맺기보다는 그들이 올린 배틀필드5를 비꼬는 사진이나 게임을 비판하는 글이 담긴 사진이 RT를 통해 이용자들 사이에서 퍼지는 것이었습니다


  1. 결론 및 한계

I. 해석 및 시사점

해석 및 시사점 개요

<사진15. 해석 및 시사점 개요>

처음 트레일러가 공개되었을 때, 배틀필드5에 대한 트윗량은 대단히 많았지만, 얼마 지나지 않아서 큰 폭으로 감소했습니다. 이는 트레일러 공개 초반이 지나고 나서 네트워크 자체에서 이탈하는 사람들이 많았다고 볼 수 있습니다.

이 때, 각 집단의 인플루언서들의 연결방식의 차이점을 고려한다면, 왜 담론의 비율이 서서히 바뀌었는지 유추할 수 있습니다.

부정적 담론의 연결관계는 주로 일반유저들의 사진을 퍼져 나가면서 생겼고, 긍정적 담론은 인플루언서들의 지속적인 커뮤니케이션으로 인한 연결관계에서 생겨났습니다. 사람들이 네트워크에서 이탈하고 있는 상황에서 이를 붙잡기 위해서는 사람들의 이목을 주목시킬 다른 요소가 필요한데, 일반유저들이 이를 수행하기에는 한계가 있습니다. 그에 반해 긍정적 담론의 경우, 해당 업계 관계자들이 지속적인 커뮤니케이션을 통해 남아있는 이용자들의 관심을 붙잡고 긍정적 담론을 이끌었기 때문에 서서히 담론이 비율이 바뀌었다고 볼 수 있습니다.

하지만, 이탈한 이용자들은 이슈가 생긴다면 언제든지 다시 돌아올 수 있고, 트윗량이 급감했다는 거 자체가 게임에 대한 관심이 떨어졌다는 의미이므로, 게임사는 현재 사태에서 안심할 것이 아니라, 앞으로의 행보와 게임의 완성도에 심혈을 기울어야 할 것입니다.

결론적으로, 현재 네트워크 이탈자가 많은 상황은 게임에 자체에 대한 관심이 떨어진 것을 의미하기에, 처음 연구배경이었던 어떤 감정의 담론이 지배적으로 흘러가는가에 대한 정확한 판단을 내리기 어려우며, 현재 긍정적 담론이 계속 늘어난다고 해서 모든 유저들의 의견을 대변한다고 판단할 수는 없을 것입니다.

그러나 이탈한 이용자들은 이슈가 생긴다면 언제든지 다시 돌아올 수 있기에, 게임사는 현재 사태에서 안심할 것이 아니라, 앞으로의 행보와 게임의 완성도에 심혈을 기울어야 합니다.


  1. 연구한계

가장 아쉬웠던 점은 데이터 수집 조건을 #battlefieldv로만 데이터 수집 조건을 달아서 실제 배틀필드5에 대한 전체 데이터랑 차이가 있는 점입니다. 같은 해시태그 범주에도 #battlefield5, #bf5, #bf5 가 있는데 누락하였으며, 이를 깨달았을 때는 이미 해당 날짜 데이터를 수집할 수 없을 수 없었습니다. 실제로 동일기간 동안 #notmybattlefield 조건을 걸어서 데이터를 수집한 결과 약 만 여개가 수집되어 현재 데이터 결과와 차이를 보였습니다.